package com.carbon.system.service;

import com.carbon.common.service.BaseService;
import com.carbon.system.entity.SysMenu;
import com.carbon.system.param.SysMenuQueryParam;
import com.carbon.system.param.SysMenuStatusParam;
import com.carbon.system.vo.SysMenuVo;
import cn.hutool.core.lang.tree.Tree;

import java.util.List;

/**
 * 菜单权限表 服务层
 * 
 * @author carbon
 * @date 2024-01-01
 */
public interface SysMenuService extends BaseService<SysMenu> {

    /**
     * 获取分页对象
     * @param param 查询参数
     * @return List<SysMenuVo>
     */
    List<SysMenuVo> getSysMenuList(SysMenuQueryParam param);

    /**
     * 获取当前用户菜单
     * @return List<Tree<Long>>
     */
    List<Tree<Long>> getCurrentUserMenu();

    /**
     * 修改菜单状态
     */
    void updateStatus(SysMenuStatusParam param);

    /**
     * 根据菜单名称查询菜单
     * @param menuName 菜单名称
     * @return SysMenuVo
     */
    SysMenuVo getMenuByName(String menuName);
}